package com.haojin.java;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @author .29.
 * @create 2022-04-11 16:19
 */
/*
Collections:操作Collection、Map的工具类

面试题：Collections 和 Collection的区别？

排序操作（均为static方法）
reverse(List):反转List中的元素顺序
shuffle(List):对List集合元素进行随机排序
sort(List):根据元素的自然排序对指定List集合元素按升序排序
sort(List,Comparator):很具指定的Comparator产生的顺序对List集合元素进行排序
swap(List,int,int):将指定List集合中的i处元素和j处元素进行互换

查找、替换
Object max(Collection):根据元素的自然排序，返回给定集合中最大元素
Object max(Collection,Comparator):根据Comparator指定的顺序，返回给定集合中最大的集合
Object min(Collection):
Object min(Collection，Comparator):
int frequency(Collection,Object):返回指定集合中指定元素出现的次数
void copy(List dest,List src):将src中的内容复制到dest中
boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换List对象的所有旧值。

Collections类中提供了多个synchronizedXxx()方法，
该方法可将指定集合包装成线程同步的集合，从而可以解决多线程并发访问集合时的线程安全问题。

 */
public class CollectionsTest {
    @Test
    public void test1(){
        List list = new ArrayList();
        list.add(123);
        list.add(123);
        list.add(123);
        list.add(123);
        list.add(123);

        List dest = Arrays.asList(new Object[list.size()]);
        Collections.copy(dest,list);
        System.out.println(dest);
        /*
        Collections类中提供了多个synchronizedXxx()方法，
该方法可将指定集合包装成线程同步的集合，从而可以解决多线程并发访问集合时的线程安全问题。
         */
        //返回的list1即为线程安全的List
        List lsit1 = Collections.synchronizedList(list);
    }
}
